<?php

namespace library;
//合成临时图片
use Exception;

class temp_img
{

    /**
     * 合成两张图片并保存
     *
     * @param string $backgroundPath 背景图路径（JPG/PNG）
     * @param string $overlayPath 前景图路径（PNG 推荐）
     * @param string $outputPath 合成后保存路径（推荐 .png）
     * @param int $dstX 合成位置 x 坐标
     * @param int $dstY 合成位置 y 坐标
     * @param int|null $overlayWidth 缩放宽度（默认原图宽）
     * @param int|null $overlayHeight 缩放高度（默认原图高）
     * @return bool 成功返回 true，失败抛异常
     * @throws Exception
     */
    static function mergeImages(string $backgroundPath, string $overlayPath, string $outputPath, int $dstX = 0, int $dstY = 0, int $overlayWidth = null, int $overlayHeight = null): bool
    {
        // 加载背景图
        $bgExt = pathinfo($backgroundPath, PATHINFO_EXTENSION);
        if ($bgExt === 'png') {
            $background = imagecreatefrompng($backgroundPath);
        } elseif (in_array($bgExt, ['jpg', 'jpeg'])) {
            $background = imagecreatefromjpeg($backgroundPath);
        } else {
            throw new Exception('不支持的背景图格式');
        }

        // 加载前景图
        $fgExt = pathinfo($overlayPath, PATHINFO_EXTENSION);
        if ($fgExt === 'png') {
            $overlay = imagecreatefromjpeg($overlayPath);
        } elseif (in_array($fgExt, ['jpg', 'jpeg'])) {
            $overlay = imagecreatefromjpeg($overlayPath);
        } else {
            throw new Exception('不支持的前景图格式');
        }

        // 获取前景图尺寸
        $srcWidth = imagesx($overlay);
        $srcHeight = imagesy($overlay);
        $dstWidth = $overlayWidth ?: $srcWidth;
        $dstHeight = $overlayHeight ?: $srcHeight;

        // 处理透明
        imagealphablending($background, true);
        imagesavealpha($background, true);
        imagealphablending($overlay, true);
        imagesavealpha($overlay, true);

        // 合成（含缩放）
        imagecopyresampled(
            $background, $overlay,
            $dstX, $dstY,
            0, 0,
            $dstWidth, $dstHeight,
            $srcWidth, $srcHeight
        );

        // 保存图片
        $outExt = pathinfo($outputPath, PATHINFO_EXTENSION);
        if ($outExt === 'png') {
            imagepng($background, $outputPath);
        } elseif (in_array($outExt, ['jpg', 'jpeg'])) {
            imagejpeg($background, $outputPath, 90);
        } else {
            throw new Exception('不支持的输出格式');
        }

        imagedestroy($background);
        imagedestroy($overlay);

        return true;
    }




}